from lxml import etree


"""
XPath，全称是 XML Path Language，即 XML 路径语言，它是一门在 XML 文档中查找信息的语言。它最初是用来搜寻 XML 文档的，但是它同样适用于 HTML 文档的搜索。
所以在做爬虫时，我们完全可以使用 XPath 来做相应的信息抽取
XPath 的选择功能十分强大，它提供了非常简洁明了的路径选择表达式。另外，它还提供了超过 100 个内建函数，用于字符串、数值、时间的匹配以及节点、序列的处理等。几乎所有我们想要定位的节点，都可以用 XPath 来选择

准备下载三方库
pip install lxml
"""

text = '''
<div>
    <ul>
         <li class="item-0"><a href="link1.html">first item</a></li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-inactive"><a href="link3.html">third item</a></li>
         <li class="item-1"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a>
     </ul>
 </div>
'''

"""
  示例 1 xpath初始化方式方式1-传入字符串 会自动调整缺失的html的结构
  经过处理之后，li 节点标签被补全，并且还自动添加了 body、html 节点
"""
# 初始化xpath解析对象, 传入字符串串
html = etree.HTML(text)
result = etree.tostring(html)
print(result.decode('utf-8')) # 字节解码成字符串

"""
  示例 1 xpath初始化方式方式2-读取文件

"""
html = etree.parse('./test.html', etree.HTMLParser())
result = etree.tostring(html)
print(result.decode('utf-8'))



